import { fetchEventSource } from "@microsoft/fetch-event-source";
import { getToken } from '@/utils/auth'

/* 
 * url 接口地址
 * params 参数
 * sCB 成功回调
 * eCB 失败回调
*/
export const sseRequset = (url, obj, signal, sCB, eCB) => {

    fetchEventSource(url, {
        method: "POST",
        signal: signal,  // 使用传入的 signal 来中断请求
        // 如果openWhenHidden设置为 true，即使文档处于隐藏状态，也会保持请求的打开状态。
        // 离开页面导致的连接断开可以通过设置 openWhenHidden: true来避免
        openWhenHidden: true,
        headers: {
            "Content-Type": "application/json",
            'Authorization': getToken(),
        },
        body: JSON.stringify(obj),
        onmessage(msg) {
            sCB(msg);
        },
        onerror(err) {
            // 必须抛出错误才会停止
            eCB(err);
            throw err;
        },
    });
};


